/******************************************************************************
 * This program is a 100% Java Email Server.
 ******************************************************************************
 * Copyright (c) 2001-2011, Eric Daugherty (http://www.ericdaugherty.com)
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *   * Redistributions of source code must retain the above copyright
 *     notice, this list of conditions and the following disclaimer.
 *   * Redistributions in binary form must reproduce the above copyright
 *     notice, this list of conditions and the following disclaimer in the
 *     documentation and/or other materials provided with the distribution.
 *   * Neither the name of the copyright holder nor the
 *     names of its contributors may be used to endorse or promote products
 *     derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER ''AS IS'' AND ANY
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 ******************************************************************************
 * For current versions and more information, please visit:
 * http://javaemailserver.sf.net/
 *
 * or contact the authors at:
 * java@ericdaugherty.com
 * andreaskyrmegalos@hotmail.com
 *
 ******************************************************************************
 * This program is based on the CSRMail project written by Calvin Smith.
 * http://crsemail.sourceforge.net/
 ******************************************************************************
 *
 * $Rev$
 * $Date$
 *
 ******************************************************************************/

package com.ericdaugherty.mail.server.configuration;

//Java Imports
import java.io.IOException;
import javax.security.auth.callback.*;

/**
 * The superclass method handle is replaced to facilitate the use
 * of a popup window.
 *
 * @author Andreas Kyrmegalos
 */
public class LoginCallbackHandlerGUI extends LoginCallbackHandler{

   private String protocol;

   public LoginCallbackHandlerGUI(String protocol) {
      super();
      this.protocol = protocol;
   }

   public void handle(Callback[] callbacks)
         throws IOException, UnsupportedCallbackException {

      for (int i=0;i<callbacks.length;i++) {
         if (callbacks[i] instanceof PasswordCallback) {
            PasswordCallback pw = (PasswordCallback)callbacks[i];
            java.awt.EventQueue.invokeLater(new Runnable() {

               public void run() {
                  PasswordPopup ppu = new PasswordPopup(protocol+" kerberos 5 password:", LoginCallbackHandlerGUI.class);
                  ppu.pack();
                  ppu.setLocationRelativeTo(null);
                  ppu.setVisible(true);
               }
            });
            while(!complete) {
               try {
                  Thread.sleep(0,500);
               } catch (InterruptedException ex) {
               }
            }
            pw.setPassword(pwd);
            com.ericdaugherty.mail.server.configuration.ConfigurationManager.addIdentityPassword(protocol.toLowerCase(), pwd);
            for (int j=0;j<pwd.length;j++) {
               pwd[j] = 0xFF;
            }
            complete = false;
         }
      }

   }
}
